Skip to content

feat(web): rebuild the UI into the command-center app shell - #9

Merged
PouyanJay merged 1 commit into
mainfrom
redesign/command-center-ui
Jun 29, 2026
Merged

feat(web): rebuild the UI into the command-center app shell#9
PouyanJay merged 1 commit into
mainfrom
redesign/command-center-ui

Conversation

@PouyanJay

Copy link
Copy Markdown
Owner

Why

The web app was built surface-by-surface and never assembled into the command-center shell the design intends — no nav sidebar, no real system bar, no grouped session list, no session-detail rail, and no Devices/Settings/launch-drawer. It also had concrete defects: the rail mishandled long device names, the repo picker was a raw native <select>, and control sizing was inconsistent.

What

  • Persistent (app) shell (new route group, one shared layout): Sidebar (brand, route-aware nav with active indicator + counts, paired-device list, account footer), SystemBar (relay state · e2e · live agent counts), MobileNav (bottom tabs + FAB). The single relay connection now lives in the shell — opened once, never torn down across navigation.
  • Surfaces: grouped dashboard (Needs your decision / Active / Recent) + header stats; session detail with a header + right rail (Session / Changes / Connection — real +/− counts from the approval-gate diffs); new Devices and Settings pages; launch drawer (⌘N / sidebar / FAB) with a properly styled accessible repo select and a real permission-mode control.
  • @telecode/ui primitives: IconButton, Pill, Panel, Drawer + a trapFocus action and an --accent-line token.
  • Pure, unit-tested $lib logic: session grouping/counts, device presence, change summary, relative time, permission-mode persistence, active-nav matching.

Defects fixed

Long device-name truncation; the "vibe-coded" repo dropdown (styled native <select>); systematic control sizing; a mobile bug found during verification where the desktop sidebar overlapped content at phone width.

Scope

Binds only to persisted data — the mockup's invented per-row meta (repo/branch, diff stats, device OS) is omitted, not faked. Persisting those is a follow-up.

Verification

svelte-check 0/0 · tsc 0/0 · ESLint clean · Prettier clean · 201 web unit tests · production build OK. Reviewed by the project's TypeScript, test, and clean-code agents (zero blocking findings, all important findings applied) and manually screenshotted (sign-in, shell, Settings, Devices, launch drawer, responsive phone layout).

Assemble the web app into the persistent command-center shell the design
intends — a left nav sidebar, a system bar, a grouped session list, a
session-detail rail, and Devices/Settings pages, with a slide-out launch
drawer. Authenticated routes move into an (app) route group sharing one
layout that owns the single relay connection (opened once, never torn down
across navigation).

- packages/ui: add IconButton, Pill, Panel, Drawer primitives, a trapFocus
  action, and an --accent-line token.
- web components: Sidebar, SystemBar, MobileNav, LaunchDrawer, SessionRow,
  SessionGroupHeader, SessionHeader, SessionRail, PageHeader,
  PermissionModeField; grouped dashboard with header stats; Devices + Settings.
- Pure, unit-tested $lib logic: session grouping/counts (session-groups),
  device presence (devices), change summary (changes), relative time (time),
  permission-mode persistence (settings), active-nav matching (nav).
- Fix long device-name handling, replace the raw repo <select> with a styled
  accessible one, and route control sizing through the design system.
- Bind only to persisted data (no fabricated repo/branch/diff/OS); responsive
  PWA layout with a phone bottom-nav + FAB.

Gates: svelte-check, tsc, ESLint, Prettier, 201 web unit tests, and the
production build all pass.
@PouyanJay
PouyanJay merged commit 6837c42 into main Jun 29, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant